package cn.java86.dao;

import cn.java86.entity.Student;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface StudentDao {
    public int add(Student s);
    public int update(Student s);
    public int updatePass(@Param("stuno") long stuno, @Param("newPass")String newPass);
    public int del(long stuno);
    public Student get(long stuno);

    public List<Student> search(@Param("pageNo") int pageNo, @Param("pageSize")int pageSize);
    //不直观
    public List<Student> search1(Map<String,Object> parms);

    /**
     * 多条件查找并且有分页
     * @param pageNo
     * @param pageSize
     * @param sname
     * @param phone
     * @param enterStart
     * @param enterEnd
     * @return
     */
    public List<Student> paging(@Param("pageNo") int pageNo,
                                @Param("pageSize")int pageSize,
                                @Param("sname")String sname,
                                @Param("qq")String qq,
                                @Param("phone")String phone,
                                @Param("enterStart")Date enterStart,
                                @Param("enterEnd")Date enterEnd);

    public long pageTotal(@Param("sname")String sname,
                                @Param("qq")String qq,
                                @Param("phone")String phone,
                                @Param("enterStart")Date enterStart,
                                @Param("enterEnd")Date enterEnd);

    //查找各个性别的人数
    public List<Map<String,Integer>> countBySex();

   //删除多个学生
    //delete from s_student where stuno in(?,?,?)
    public int dels(@Param("ids") long []ids);

    /**
     * 根据入学时间查询学生
     * 1:本月入学
     * 2：最近3个月入学
     * 3:半年入学
     * 4:1年内
     * 5:时间没有填写的
     * 其他情况，忽略
     * @param type
     * @return
     */
    public List<Student> queryByTime(@Param("type") int type);

    //查询部分列
    public List<Student> queryStudentInfos(@Param("cols")String...cols);
}
